/**
 * 内容表，笔记、文章、教程等 接口及相关类定义
 * @author keller
 * @date 2025-05-31 19:08:27
 */
import request from '@/utils/request'
import {ApiResponse,PageData,PageQuery,BaseDetail} from "@/ts/CommonTypes"
import { downloadExcel } from "@/api/ApiUtils"
const urlPrefix = "/api/sysContent"

/**
 * 内容表，笔记、文章、教程等 视图类，用于在页面上展示数据
 */
export class SysContentVO extends BaseDetail{
   // 标题
   title: string | null ;
   // 内容
   content: string | null ;
   // 分组ID
   groupId: number | null ;
   // 分组名称
   groupName: string | null ;
   // 状态：draft 草稿；published 已发布；deleted 已删除（回收站）
   status: string | null ;
   // 标签，多个标签英文逗号隔开
   tags: string | null ;
    constructor(init?: Partial<SysContentVO>) {
        super();
        if (init) {
            Object.assign(this, init);
        }
    }
};

/**
 * 内容表，笔记、文章、教程等 查询类，用于查询构造条件
 */
export class SysContentQuery extends PageQuery{
   // 分组ID
   groupId: number| null ;
    constructor(init?: Partial<SysContentQuery>) {
        super();
        if (init) {
            Object.assign(this, init);
        }
    }
};


/**
 * 查询详情
 */
export function apiGetDetail(id:Number | String){
    return request<ApiResponse<SysContentVO>>({
        url: urlPrefix + '/baseGetById',
        method: 'GET',
        params: { id },
    })
}

/**
 * 分页查询
 */
export function apiGetList(query:SysContentQuery ) {
    return request<ApiResponse<PageData<SysContentVO>>>({
        url: urlPrefix + '/basePage',
        method: 'POST',
        data: query,
    })
}

/**
 * 保存数据
 */
export function apiSave(vo:SysContentVO) {
    return request({ url: urlPrefix + '/baseSave',data: vo ,method: 'POST'});
}

/**
 * 删除数据
 */
export function apiDeleteById(id:Number | String){
    return request({ url: urlPrefix + '/baseDelete',data: {id:id},method: 'POST'});
}

/**
 * 数据导出
 */
export function apiExportList(query: SysContentQuery) {
    request.post(urlPrefix + '/baseExport', query, { responseType: "blob" })
        .then((res: Blob) => {
            downloadExcel(res, "SysContent列表.xlsx")
        })
        .catch(error => {
            console.error("导出失败:", error)
        })
}


export function apiQueryListByType(type:string){
    return request({
        url: urlPrefix + '/queryListByType',
        method: 'GET',
        params: { type },
    })
}

